package demo

import (
	"log"
	"tcp-lib/pkg/codec"
	"tcp-lib/pkg/router"
	"tcp-lib/pkg/server"
	"tcp-lib/proto"
)

// 实现协议ID接口
type LoginMessage struct {
	*proto.LoginReq
}

func (m *LoginMessage) GetProtocolID() uint32 {
	return 1001
}

func main() {
	// 初始化路由
	r := router.NewRouter()
	r.Register(1001, func(data interface{}) {
		if msg, ok := data.(*LoginMessage); ok {
			log.Printf("收到登录请求: %+v", msg)
			// 处理登录逻辑...
		}
	})

	// 创建带协议头的编解码器
	codec := &codec.ProtoCodecWithHeader{
		TypeResolver: func(id uint32) proto.Message {
			switch id {
			case 1001:
				return &proto.LoginReq{}
			}
			return nil
		},
	}

	// 启动服务器
	s := server.NewServer(":8080", codec, r)
	log.Fatal(s.ListenAndServe())
}
